home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / jovept2.arc / JOVE.H < prev    next >
Text File  |  1985-05-30  |  8KB  |  362 lines

  1. /* jove.h header file to be included by EVERYONE */
  2.  
  3. #ifdef UNIX
  4. #include <setjmp.h>
  5. #else
  6. typedef int jmp_buf[10];
  7. #endif
  8.  
  9. #include "tune.h"
  10.  
  11.  
  12. #define EOF    -1
  13. #define NULL    0
  14. #define MAXNLINES    66    /* Change it if you want to! */
  15. #define NUMKILLS    10    /* Number of kills saved in the kill ring */
  16. #define NMARKS    16            /* Number of marks in the ring */
  17. #define DIRTY        01
  18. #define MODELINE    02
  19.  
  20. #define    READ    0
  21. #define    WRITE    1
  22.  
  23. #define OKAY    0        /* Return codes for when telling */
  24. #define ABORT    1
  25. #define STOP    2
  26.  
  27.  
  28. #define NFUNCS        130
  29. #define NMACROS        52    /* One for each letter???? VI mode for JF */
  30. #define NVARS        20
  31.  
  32. #define FUNCTION    1
  33. #define VARIABLE    2
  34. #define MACRO        3
  35.  
  36. #define DEFINE        1
  37. #define EXECUTE        2
  38.  
  39. #define    LBSIZE        BUFSIZ    /* Same as a logical disk block */
  40. #define    ESIZE        128
  41. #define    GBSIZE        256
  42.  
  43. #define RMARGIN        72    /* Default right margin */
  44.  
  45. #define ARG_CMD        1
  46. #define LINE_CMD    2
  47. #define KILLCMD        3    /* So we can merge kills */
  48. #define YANKCMD        4
  49.  
  50. #define SCRATCHBUF    1    /* Buffer types */
  51. #define NORMALBUF    2
  52.  
  53.  
  54. /* Buffer flags */
  55.  
  56. #define TEXTFILL    0    /* Text fill mode */
  57. #define OVERWRITE    1    /* Over write mode */
  58. #define CMODE        2    /* C mode */
  59. #define MAGIC        3    /* If set allow pattern matching searching */
  60. #define CASEIND        4    /* Case independent search */
  61. #define MATCHING    5    /* In show matching mode */
  62. #define AUTOIND        6    /* Indent same as previous line after return */
  63. #define NFLAGS        7    /* DO'T FORGET THIS! */
  64. #define FIRSTCALL    0
  65. #define ERROR        1
  66. #define COMPLAIN    2    /* Do the error without a getDOT */
  67. #define QUIT        3    /* Leave this level of recusion */
  68.  
  69. #define LOGOEXIT    30    /* Sounds like a nice number.  Exit non-zero,
  70.                  * but finish doesn't crash with a core dump.
  71.                  * Logo checks for non-zero to check to see
  72.                  * if it should abort the editing */
  73.  
  74. #define curline        curbuf->b_dot
  75. #define curchar        curbuf->b_char
  76. #define curmark        curbuf->b_markring[curbuf->b_themark]
  77.  
  78. /* function defs */
  79.  
  80. #define OnFlag(flags,f)        (flags[f] = 1)
  81. #define OffFlag(flags,f)    (flags[f] = 0)
  82. #define    IsFlagSet(flags,f)    (flags[f])
  83.  
  84. #define Placur(l, c)    if (l != CapLine || c != CapCol) DoPlacur(l, c) 
  85. #define CTL(c)        ('c' & 037)
  86. #define META(c)        ('c' | 0200)
  87. #define    eolp()        (linebuf[curchar] == '\0')
  88. #define bolp()        (curchar == 0)
  89. #define    lastp(line)    (line == curbuf->b_dol)
  90. #define    firstp(line)    (line == curbuf->b_zero)
  91. #define eobp()        (lastp(curline) && eolp())
  92. #define bobp()        (firstp(curline) && bolp())
  93. #define HALF(wp)    ((wp->w_height - 1) / 2)
  94. #define SIZE(wp)    (wp->w_height - 1)
  95. #define makedirty(line)    line->l_dline |= DIRTY
  96. #define IsModified(b)    (b->b_modified)
  97. #define DoTimes(f, n)    exp_p = 1, exp = n, f()
  98.  
  99.  
  100. /*----------------------------o.s. dependent------------------------*/
  101.  
  102. #ifdef UNIX
  103. #define flusho()    flushout(-1, &termout)
  104. #endif
  105.  
  106.  
  107.  
  108. /*------------------------------------------------------------------*/
  109.  
  110.  
  111. /* This procedure allows redisplay to be aborted if the buffer is
  112.  * ready to be flushed, and there are some characters waiting
  113.  */
  114.  
  115. /*
  116.  * C doesn't have a (void) cast, so we have to fake it for lint's sake.
  117.  */
  118. #ifdef lint
  119. #define    ignore(a)    Ignore((char *) (a))
  120. #define    ignorf(a)    Ignorf((int (*) ()) (a))
  121. #else
  122. #define    ignore(a)    a
  123. #define    ignorf(a)    a
  124. #endif
  125.  
  126.  
  127. /* struct defs */
  128.  
  129. #ifdef UNIX            /* unix _iobuf */
  130. struct iobuf {
  131. #ifndef VMUNIX
  132.     char    *io_ptr;
  133.     int    io_cnt;
  134.     char    *io_base;
  135.     short    io_flag;
  136.     char    io_file;
  137. #else
  138.     int    io_cnt;
  139.     char    *io_ptr;
  140.     char    *io_base;
  141.     int    io_bufsiz;
  142.     short    io_flag;
  143.     char    io_file;
  144. #endif
  145. };
  146. #endif
  147.  
  148. struct line {
  149.      struct line *l_prev,    /* Pointer to prev */
  150.         *l_next;    /* Pointer to next */
  151.     disk_line    l_dline;    /* Pointer to disk location */
  152. };
  153.  
  154. struct window {
  155.     struct window *w_prev,    /* Circular list */
  156.         *w_next;
  157.     struct buffer *w_bufp;    /* Buffer associated with this window */
  158.     struct line *w_top,        /* The top line */
  159.         *w_line;    /* The current line */
  160.     int    w_char,
  161.         w_height,    /* Height of the window */
  162.         w_topnum,    /* Line number of the topline */
  163.         w_offset,    /* Printing offset for the current line */
  164.         w_numlines,    /* Should we number lines in this window? */
  165.         w_dotcol,    /* find_pos sets this */
  166.         w_dotline,    /* UpdateWindow sets this */
  167.         w_flags;
  168. };
  169.  
  170. struct position {
  171.     struct line *p_line;    /* In the array */
  172.     int    p_char;        /* Char pos */
  173. };
  174.  
  175. struct mark {
  176.     struct line *m_line;
  177.     int    m_char;        /* Char pos of the mark */
  178.     struct mark *m_next;    /* List of marks */
  179. };
  180.  
  181. struct buffer {
  182.     char *b_name,        /* Buffer name */
  183.         *b_fname;        /* File name associated with buffer */
  184.     int    b_ino;            /* Inode of file name ~~~~~~~~~~~~~~~~ */
  185.     struct line *b_zero, /* Pointer to first line in list */
  186.         *b_dot,            /* Current line */
  187.         *b_dol;            /* Last line in list */
  188.     int    b_char;            /* Current character in line */
  189.     struct mark *b_markring[NMARKS],    /* New marks are pushed saved here */
  190.         *b_marks;        /* All the marks for this buffer */
  191.     int    b_themark;        /* Current mark */
  192.     char    b_type,            /* Scratch? */
  193.         b_modified;
  194.     int    b_flags[NFLAGS];
  195.     struct buffer *b_next;        /* Next buffer in chain */
  196. };
  197.  
  198. struct screenline {            /* The screen */
  199.     char *s_line,
  200.         *s_length;
  201. };
  202.  
  203. struct macro {
  204.     int    MacLength,    /* Length of macro so we can use ^@ */
  205.         MacBuflen,    /* Memory allocated for it */
  206.         Offset,        /* Index into body for defining and running */
  207.         Flags,        /* Defining/running this macro? */
  208.         Ntimes;        /* Number of times to run this macro */
  209.     char *Name,        /* Pointer to macro's name */
  210.         *Body;        /* Actual body of the macro */
  211. };
  212.  
  213.  
  214.  
  215. struct function {
  216.     char *f_name;
  217.     union {
  218.         int    (*Func)();    /* This is a built in function */
  219.         int    *Var;        /* Variable */
  220.         struct macro    *Macro;    /* Macro */
  221.     } f;
  222.     char f_type;
  223. };
  224.  
  225. typedef struct window    WINDOW;
  226. typedef struct position    BUFLOC;
  227. typedef struct mark    MARK;
  228. typedef struct buffer    BUFFER;
  229. typedef struct line    LINE;
  230. typedef struct function FUNCT;
  231. typedef struct screenline SCRLNE;
  232. typedef struct macro FMACRO;
  233. typedef int (*FUNC)();
  234.  
  235. #ifdef UNIX
  236. typedef struct iobuf    IOBUF;
  237. #endif
  238.  
  239.  
  240.  
  241. /* globals */
  242.  
  243. extern int
  244.     tabstop,
  245.     LastKeyStruck,
  246.     UpdMesg,
  247.     BufSize,
  248.     peekc,
  249.     io,                    /* file desc. */
  250.     exp,
  251.     exp_p,
  252.     this_cmd,
  253.     last_cmd,    
  254.     Input,                /* char that is waiting */
  255.     InputPending,        /* 0 if no char waiting */
  256.     killptr,
  257.     CanScroll,
  258.     Asking,                /* 1 if inputting string */
  259.     globflags[NFLAGS];
  260.  
  261. extern char
  262.     **argvp,
  263.     mesgbuf[100],
  264.     linebuf[LBSIZE],
  265.     genbuf[LBSIZE];
  266.  
  267. extern LINE
  268.     *killbuf[NUMKILLS];    /* Array of pointers to killed stuff */
  269.  
  270. extern WINDOW
  271.     *fwind,                /* first window in list */
  272.     *curwind;            /* current window */
  273.  
  274.  
  275. extern BUFFER
  276.     *curbuf;        /* Pointer into world for current buffer */
  277.  
  278. extern struct function
  279.     *mainmap[0200],
  280.     *pref1map[0200],
  281.     *pref2map[0200],
  282.     *LastFunc;
  283.  
  284.  
  285. #ifdef UNIX
  286. extern IOBUF
  287.     termout;
  288. #endif
  289.  
  290.  
  291. /* function decl */
  292.  
  293.  
  294. extern long    lseek();
  295. extern disk_line putline();
  296. extern struct line
  297.     *next_line(),
  298.     *prev_line(),
  299.     *nbufline(),
  300.     *reg_delete(),
  301.     *lastline(),
  302.     *listput();
  303. extern char
  304.     *FuncName(),
  305.     *filename(),
  306.     *getblock(),
  307.     *sprintf(),
  308.     *strcpy(),
  309.     *IOerr(),
  310.     *bufmod(),
  311.     *index(),
  312.     *ask(),
  313.     *RunEdit(),
  314.     *getline(),
  315.     *getblock(),
  316.     *malloc(),
  317.     *emalloc(),
  318.     *place(),
  319.     *realloc(),
  320.     *getright(),
  321.     *getcptr(),
  322.     *rindex(),
  323.     *sprint(),
  324.     *StrIndex();
  325.  
  326. extern BUFLOC
  327.     *dosearch(),
  328.     *DoYank(),
  329.     *m_paren();
  330.  
  331. extern MARK    *CurMark(),
  332.         *MakeMark();
  333.  
  334. extern WINDOW
  335.     *windlook(),
  336.     *div_wind();
  337.  
  338. extern BUFFER
  339.     *do_find(),
  340.     *do_select(),
  341.     *mak_buf(),
  342.     *file_exists(),
  343.     *buf_exists();
  344.  
  345. extern int (*Gtchar)();
  346.  
  347. #ifdef UNIX
  348. extern char    *getenv(),
  349.     *tgoto(),
  350.     *mktemp();
  351.  
  352. int    (*sigset())();        /* Sigset returns a pointer to a procedure */
  353. #endif
  354.  
  355. #ifndef UNIX
  356. extern FUNC eprefix;
  357. extern FUNC cprefix;
  358. extern FUNC frgt;
  359. #endif
  360.  
  361. /* end */
  362.